package testebancodedados;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Locacao extends Entity {
    private int codigoCliente, codigoFilme;

    Locacao(String codigoCliente, String codigoFilme) {
        this.codigoCliente = Integer.parseInt(codigoCliente);
        this.codigoFilme = Integer.parseInt(codigoFilme);
    }

    int getCodigoCliente() {
        return codigoCliente;
    }
    
    int getCodigoFilme() {
        return codigoFilme;
    }
    
    @Override
    public String tableName(){
        return "locadora.locacao";
    }

    @Override
    public String attributes() {
        return "cod_cliente, cod_filme";
    }

    @Override
    public String numAtt() {
        return "?, ?";
    }

    @Override
    public void setInsert(PreparedStatement st) {
        try {
            st.setInt(1, codigoCliente);
            st.setInt(2, codigoFilme);
        } catch (SQLException ex) {
            Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public int getCodigo() {
        return codigoCliente;
    }

    @Override
    public void setAtt(ResultSet rs) {
        if(codigoCliente==-1){
            try {
            rs.next();
            codigoCliente = rs.getInt(1);
            } catch (SQLException ex) {
                Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if(codigoFilme==-1){
            try {
            rs.next();
            codigoFilme = rs.getInt(1);
            } catch (SQLException ex) {
                Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    @Override
    public String attLessCod() {
        return "cod_cliente=?";
    }

    @Override
    public void setUpdate(PreparedStatement st) {
        try {
            st.setInt(2, codigoCliente);
            st.setInt(1, codigoFilme);
        } catch (SQLException ex) {
            Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public String getKey() {
        if(codigoCliente==-1){
            return "cod_filme=?";
        } else if(codigoFilme==-1){
            return "cod_cliente=?";
        }
        return "cod_cliente=? and cod_filme=?";
    }

    @Override
    public void setKey(PreparedStatement st) {
        if(codigoCliente==-1){
            try {
                st.setInt(1, codigoFilme);
            } catch (SQLException ex) {
            Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else if(codigoFilme==-1){
            try {
                st.setInt(1, codigoCliente);
            } catch (SQLException ex) {
            Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            try {
                st.setInt(1, codigoCliente);
                st.setInt(2, codigoFilme);
            } catch (SQLException ex) {
            Logger.getLogger(Locacao.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    @Override
    String getCollums() {
        if(codigoCliente==-1){
            return "cod_cliente";
        } else if(codigoFilme==-1){
            return "cod_filme";
        }
        return "error";
    }

}
